.data
a: .long 7
b: .long 77
outform: .string "%d ist ggT von %d und %d.\n"

.text
.globl main
main:
movl a, %eax
movl b, %ebx

pushl %ebx
pushl %eax
subl $4, %esp

call ggt
popl %eax
pushl %eax

pushl $outform

call printf
addl $16, %esp

movl $1, %eax
int $0x80

.global ggt
ggt:
// Basepoint sichern
pushl %ebp
mov %esp, %ebp

// Übergebene Parameter
movl 12(%ebp), %eax
movl 16(%ebp), %ebx

.GGT:
cmpl $0, %ebx // Bis %ebx != 0
je .Ende
cmpl %eax, %ebx
jge .Groesser // Wenn eax groesser ist
subl %ebx, %eax
jmp .GGT
.Groesser:
incl %edx
subl %eax, %ebx
jmp .GGT
.Ende:
movl %eax, 8(%ebp)
popl %ebp
ret
